

#ifndef UC_GEOFFSF_H
#define UC_GEOFFSF_H

#include "zgegbl.h"
#include "zgepnt3d.h"
#include "zgesurf.h"
#pragma pack (push, 8)

class UcGePlane;
class UcGeBoundedPlane;
class UcGeCylinder;
class UcGeCone;
class UcGeSphere;
class UcGeTorus;

class
GX_DLLEXPIMPORT
UcGeOffsetSurface : public UcGeSurface
{
public:
    UcGeOffsetSurface();
    UcGeOffsetSurface(UcGeSurface* baseSurface,
                      double offsetDist,
                      ZSoft::Boolean makeCopy = ZSoft::kTrue);
    UcGeOffsetSurface(const UcGeOffsetSurface& offset);

    ZSoft::Boolean    isPlane        () const;
    ZSoft::Boolean    isBoundedPlane () const;
    ZSoft::Boolean    isSphere       () const;
    ZSoft::Boolean    isCylinder     () const;
    ZSoft::Boolean    isCone         () const;
    ZSoft::Boolean    isTorus        () const;

        ZSoft::Boolean    getSurface(UcGeSurface*&) const;

    void              getConstructionSurface (UcGeSurface*& base) const;

    double            offsetDist     () const;

    UcGeOffsetSurface& set        (UcGeSurface*, double offsetDist,
                                    ZSoft::Boolean makeCopy = ZSoft::kTrue);

    UcGeOffsetSurface& operator =  (const UcGeOffsetSurface& offset);
};

#pragma pack (pop)
#endif
